package online.longzipeng;

/**
 * @Author: lzp
 * @description: 字符串解码
 * 给定一个经过编码的字符串，返回它解码后的字符串。
 * 编码规则为: k[encoded_string]，表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。
 * 你可以认为输入字符串总是有效的；输入字符串中没有额外的空格，且输入的方括号总是符合格式要求的。
 * 此外，你可以认为原始数据不包含数字，所有的数字只表示重复的次数 k ，例如不会出现像 3a 或 2[4] 的输入。
 * <p>
 * 示例 1：
 * <p>
 * 输入：s = "3[a]2[bc]"
 * 输出："aaabcbc"
 * 示例 2：
 * <p>
 * 输入：s = "3[a2[c]]"
 * 输出："accaccacc"
 * @Date: 2023/10/25
 */
public class Solution394 {

	public static String decodeString(String s) {
		StringBuilder rs = new StringBuilder();
		int num = 0;
		StringBuilder strT = new StringBuilder();
		for (int i = 0; i < s.length(); i++) {
			char c = s.charAt(i);
			// 数字
			if (c >= '0' && c <= '9') {
				num += num * 10 + Integer.parseInt(c + "");
			} else if (c == '[') {
				for (i = i + 1; i < s.length(); i++) {
					c = s.charAt(i);
					if (c == ']') {
						while (num > 0) {
							rs.append(strT);
							num--;
						}
						strT = new StringBuilder();
						break;
					}
					strT.append(c);
				}
			} else {
				rs.append(c);
			}
		}
		return rs.toString();
	}

	public static void main(String[] args) {
		System.out.println(decodeString("3[a]2[bc]"));
	}

}
